/*
 * Classe dérivé de JPanel qui s'occupe de l'affichage et de l'interaction avec les differentes pieces de la maison
 *
 */

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

/**
 *
 * @author Nicolas
 */
public class AffichePiece extends JPanel implements MouseListener, ActionListener {

	private Dessin dess;
	private JPanel panPrincipal;

	private JPopupMenu jpm;
	private JMenuItem selectionner;

	private Maison maison;
	private MenuPiece menuPiece;

	private int numPiece;

	AffichePiece(MenuPiece menuPiece, Maison maison) {

		this.menuPiece = menuPiece;
		this.maison = maison;

		dess = new Dessin();
		dess.addMouseListener(this);

		panPrincipal = new JPanel();
		panPrincipal.setPreferredSize(new Dimension(700, 500));

		this.panPrincipal.add(dess);
		dess.setPreferredSize(new Dimension(800, 500));


		jpm = new JPopupMenu();
		selectionner = new JMenuItem("Modifier presence");
		selectionner.addActionListener(this);
		this.jpm.add(selectionner);

		this.add(panPrincipal);
	}


	/**
	 * JPanel qui s'occupe de l'affichage des pieces de la maison
	 */
	class Dessin extends JPanel {                

		/**
		 * methode qui permet de dessiner les pieces
		 * @param g 
		 */
		public void paintComponent(Graphics g) {

			super.paintComponent(g);
			setBackground(Color.white);


			for(int i = 0; i < maison.getListePiece().size(); i++){

				g.drawRect(maison.getListePiece().get(i).getCoordHG(),maison.getListePiece().get(i).getCoordBD(), 100, 100);
				g.drawString(maison.getListePiece().get(i).getNomPiece(), maison.getListePiece().get(i).getCoordHG() +5, maison.getListePiece().get(i).getCoordBD() - 5);              
			}  
			g.fillRect(maison.getListePiece().get(numPiece).getCoordHG(), maison.getListePiece().get(numPiece).getCoordBD(), 100, 100);
			repaint();

		}
	}

	/**
	 * Methode pour gerer les clic souris
	 */
	public void mouseClicked(MouseEvent e) {

		if (e.getButton() == MouseEvent.BUTTON1) {

			for (int i = 0; i < maison.getListePiece().size(); i++) {
				if ((e.getX() >= maison.getListePiece().get(i).getCoordHG()) && (e.getX() <= (maison.getListePiece().get(i).getCoordHG() + 100))
						&& (e.getY() >= maison.getListePiece().get(i).getCoordBD()) && (e.getY() <= (maison.getListePiece().get(i).getCoordBD() + 100))) {

					menuPiece.selectionnerPiece(i);

					menuPiece.changerList(i);
					System.out.println(i);
					numPiece = i;

					//                    menuPiece.selectionnerPiece(i);
					//                    menuPiece.modifierPresence(i);
					//
					//             menuPiece.changerList(i);


				}
			}
		}


		if (e.getButton() == MouseEvent.BUTTON3) {

			for (int i = 0; i < maison.getListePiece().size(); i++) {
				if ((e.getX() >= maison.getListePiece().get(i).getCoordHG()) && (e.getX() <= (maison.getListePiece().get(i).getCoordHG() + 100))
						&& (e.getY() >= maison.getListePiece().get(i).getCoordBD()) && (e.getY() <= (maison.getListePiece().get(i).getCoordBD() + 100))) {

					jpm.show(dess, e.getX(), e.getY());
					numPiece = i;
				}
			}
		}
	}


	@Override
	public void mousePressed(MouseEvent e) {
	}

	@Override
	public void mouseReleased(MouseEvent e) {
	}

	@Override
	public void mouseEntered(MouseEvent e) {
	}

	@Override
	public void mouseExited(MouseEvent e) {
	}

	@Override

	/**
	 * gere le clic sur le bouton selectionner
	 */
	public void actionPerformed(ActionEvent e) {
		if(e.getSource().equals(selectionner)){
			menuPiece.modifierPresence(numPiece);
			menuPiece.selectionnerPiece(numPiece);
			menuPiece.changerList(numPiece);
		}        
	}  
}